--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commit d0b81dedb2f69bd8d76fe5ea6f85219810a75562
Parents : 8d059ac
Author : Mark Qvist <bc7291552be7a58f361522990465165c>
Signature : T66BB85Valid, signed by author
Date : 2026-07-20T02:28:52+02:00
Local map fixes
Changes
2 files changed, 9 insertions(+), 5 deletions(-)
Diff
diff --git a/sbapp/mapview/mbtsource.py b/sbapp/mapview/mbtsource.py
index 299a9bb9..33208fc3 100644
--- a/sbapp/mapview/mbtsource.py
+++ b/sbapp/mapview/mbtsource.py
@@ -23,7 +23,8 @@ class MBTilesMapSource(MapSource):
if metadata["format"] == "pbf": raise ValueError("Only raster maps are supported, not vector maps")
RNS.log(f"Loaded local MBTiles map:\n{metadata}", RNS.LOG_DEBUG)
self.min_zoom = int(metadata["minzoom"])
- self.max_zoom = int(metadata["maxzoom"])
+ self.max_zoom = max(int(metadata["maxzoom"]), 19)
+ self._max_zoom = int(metadata["maxzoom"])
self.attribution = "Local MBTiles" # metadata.get("attribution", "")
cx = cy = 0.0
cz = 5
diff --git a/sbapp/ui/map.py b/sbapp/ui/map.py
index 1ba3d36f..a53f0138 100644
--- a/sbapp/ui/map.py
+++ b/sbapp/ui/map.py
@@ -30,9 +30,10 @@ from mapview.clustered_marker_layer import ClusteredMarkerLayer, ClusterMapMarke
import threading
from datetime import datetime
-if RNS.vendor.platformutils.get_platform() == "android":
+if RNS.vendor.platformutils.is_android():
from ui.helpers import ts_format
from android.permissions import request_permissions, check_permission
+ from android.storage import primary_external_storage_path, secondary_external_storage_path
else:
from .helpers import ts_format
@@ -63,6 +64,7 @@ class Map():
mlat = self.app.sideband.config["map_lat"]; mlon = self.app.sideband.config["map_lon"]
if mzoom > msource.max_zoom: mzoom = msource.max_zoom
if mzoom < msource.min_zoom: mzoom = msource.min_zoom
+ if hasattr(msource, "_max_zoom"): mzoom = min(mzoom, msource._max_zoom)
if mlat < -89: mlat = -89
if mlat > 89: mlat = 89
if mlon < -179: mlon = -179
@@ -123,6 +125,8 @@ class Map():
ok_button.bind(on_release=ate_dialog.dismiss)
ate_dialog.open()
+ self.offline_source = source
+
except Exception as e:
RNS.log(f"Error while loading map \"{path}\": "+str(e), RNS.LOG_ERROR)
if RNS.vendor.platformutils.get_platform() == "android":
@@ -149,7 +153,7 @@ class Map():
perm_ok = False
if self.app.sideband.config["map_storage_path"] == None:
if RNS.vendor.platformutils.is_android():
- perm_ok = self.check_storage_permission()
+ perm_ok = self.app.check_storage_permission()
if self.app.sideband.config["map_storage_external"]:
path = secondary_external_storage_path()
@@ -197,8 +201,7 @@ class Map():
ate_dialog.open()
def get_offline_source(self):
- if self.offline_source != None:
- return self.offline_source
+ if self.offline_source != None: return self.offline_source
else:
try:
current_map_path = self.app.sideband.config["map_storage_file"]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────